using BunnyEater.Common.ResponseOutput;
using BunnyEater.Domain.Base;
using BunnyEater.Service.SystemManagementService.RoleService.Dto;
using System.Threading.Tasks;

namespace BunnyEater.Service.SystemManagementService.RoleService
{
    /// <summary>
    /// 角色服务接口，提供角色的增删改查及分页等基础功能
    /// </summary>
    public interface IRoleService : ITransientService
    {
        /// <summary>
        /// 新增角色
        /// </summary>
        Task<ResponseReturnsEntity<bool>> AddRole(RoleListDto roleDto);
        /// <summary>
        /// 修改角色
        /// </summary>
        Task<ResponseReturnsEntity<bool>> UptRole(RoleListDto roleDto);
        /// <summary>
        /// 删除角色（软删除）
        /// </summary>
        Task<ResponseReturnsEntity<bool>> DeleteRole(string id);
        /// <summary>
        /// 修改角色状态
        /// </summary>
        Task<ResponseReturnsEntity<bool>> UpdateRoleState(string id, bool state);
        /// <summary>
        /// 根据ID获取角色
        /// </summary>
        Task<ResponseReturnsEntity<RoleListDto>> GetRoleById(string id);
        /// <summary>
        /// 分页查询角色列表
        /// </summary>
        Task<ResponseReturnsEntity<Page<RoleListDto>>> GetPagedRolesAsync(RolePagedQueryDto query);
        /// <summary>
        /// 获取角色详情（包含权限ID和名称）
        /// </summary>
        /// <param name="id">角色Id</param>
        /// <returns>角色详情</returns>
        Task<ResponseReturnsEntity<RoleDetailDto>> GetRoleDetailById(string id);
    }
}